/***************************************************************************\
*
* Module Name: PMFONT.H
*
* OS/2 Presentation Manager type declarations for Fonts.
*
* Copyright (c) 1989-1990, Microsoft Corporation.  All rights reserved.
*
\***************************************************************************/

#define PMFONT_INCLUDED

typedef struct _FOCAMETRICS { /* foca */
	ULONG	ulIdentity;
	ULONG	ulSize;
	CHAR	szFamilyname[32];
	CHAR	szFacename[32];
	SHORT	usRegistryId;
	SHORT	usCodePage;
	SHORT	yEmHeight;
	SHORT	yXHeight;
	SHORT	yMaxAscender;
	SHORT	yMaxDescender;
	SHORT	yLowerCaseAscent;
	SHORT	yLowerCaseDescent;
	SHORT	yInternalLeading;
	SHORT	yExternalLeading;
	SHORT	xAveCharWidth;
	SHORT	xMaxCharInc;
	SHORT	xEmInc;
	SHORT	yMaxBaselineExt;
	SHORT	sCharSlope;
	SHORT	sInlineDir;
	SHORT	sCharRot;
	USHORT	usWeightClass;
	USHORT	usWidthClass;
	SHORT	xDeviceRes;
	SHORT	yDeviceRes;
	SHORT	usFirstChar;
	SHORT	usLastChar;
	SHORT	usDefaultChar;
	SHORT	usBreakChar;
	SHORT	usNominalPointSize;
	SHORT	usMinimumPointSize;
	SHORT	usMaximumPointSize;
	SHORT	fsTypeFlags;
	SHORT	fsDefn;
	SHORT	fsSelectionFlags;
	SHORT	fsCapabilities;
	SHORT	ySubscriptXSize;
	SHORT	ySubscriptYSize;
	SHORT	ySubscriptXOffset;
	SHORT	ySubscriptYOffset;
	SHORT	ySuperscriptXSize;
	SHORT	ySuperscriptYSize;
	SHORT	ySuperscriptXOffset;
	SHORT	ySuperscriptYOffset;
	SHORT	yUnderscoreSize;
	SHORT	yUnderscorePosition;
	SHORT	yStrikeoutSize;
	SHORT	yStrikeoutPosition;
	SHORT	usKerningPairs;
	SHORT	sFamilyClass;
	PSZ	pszDeviceNameOffset;
} FOCAMETRICS;
typedef FOCAMETRICS FAR *PFOCAMETRICS;

typedef struct _FONTDEFINITIONHEADER { /* fdh */
	ULONG	ulIdentity;
	ULONG	ulSize;
	SHORT	fsFontdef;
	SHORT	fsChardef;
	SHORT	usCellSize;
	SHORT	xCellWidth;
	SHORT	yCellHeight;
	SHORT	xCellIncrement;
	SHORT	xCellA;
	SHORT	xCellB;
	SHORT	xCellC;
	SHORT	pCellBaseOffset;
} FONTDEFINITIONHEADER;
typedef FONTDEFINITIONHEADER FAR *PFONTDEFINITIONHEADER;

#define FONTDEFFONT1	0x0047	   /* set width, height, inc. & base offset */
#define FONTDEFFONT2	0x0042	   /* set height & base offset		    */
#define FONTDEFFONT3	0x0042	   /* set height & base offset		    */
#define FONTDEFCHAR1	0x0081	   /* set char offset and width 	    */
#define FONTDEFCHAR2	0x0081	   /* set char offset and width 	    */
#define FONTDEFCHAR3	0x00b8	   /* set char offset, A, B, and C space    */
#define SPACE_UNDEF	0x8000	   /* space undefined = take default	    */

typedef struct _FONTSIGNATURE { /* fs */
	ULONG	ulIdentity;
	ULONG	ulSize;
	CHAR	achSignature[12];
} FONTSIGNATURE;
typedef FONTSIGNATURE FAR *PFONTSIGNATURE;

typedef struct _FOCAFONT { /* ff */
	FONTSIGNATURE	fsSignature;
	FOCAMETRICS	fmMetrics;
	FONTDEFINITIONHEADER fdDefinitions;
} FOCAFONT;
typedef FOCAFONT FAR *PFOCAFONT;

#define FONT_SIGNATURE   0xfffffffe /* Identity header start                 */
#define FONT_METRICS     0x00000001 /* Identity metrics                      */
#define FONT_DEFINITION  0x00000002 /* Identity definition                   */
#define FONT_ENDRECORD	0xffffffff /* Identity record end		    */

/* Options for QueryFonts */

#define QUERY_PUBLIC_FONTS	0x0001
#define QUERY_PRIVATE_FONTS	0x0002

#define CDEF_GENERIC		0x0001
#define CDEF_BOLD		0x0002
#define CDEF_ITALIC		0x0004
#define CDEF_UNDERSCORE 	0x0008
#define CDEF_STRIKEOUT		0x0010
#define CDEF_OUTLINE		0x0020
